Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In many cases, software applications are designed to interact with other software applications or other computer systems. In some instances, software applications may be designed to create and run virtual computer systems or virtual machines. Virtual machines are computer systems that are configured to run on top of an existing computer system. A virtual machine typically includes an operating system and applications that have been installed by the user. Virtual machines can be booted and shut down while the host operating system is still running. Virtual machine state can be stored in a data store, thus allowing for a user to create multiple versions of a virtual machine.
For example, in a software testing scenario, a user may create a virtual machine with a Linux-based operating system and a virtual machine with a Windows®-based operating system. The user may further create variants on either system where the operating system has modified settings and/or different programs installed. For instance, a user may have one virtual machine with applications A, B and C, while another virtual machine has applications C, D and E. Many such variations are possible. As a result, a software test facility or other entity may create many hundreds or even thousands of different virtual machines. Managing such a large number of virtual machines can often be cumbersome.